ggplot2: Basics

ggplot2: Das Paket


ggplot2 gehört zum tidiverse

#install.packages("tidyverse")
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.0.4     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors


… kann aber natürlich auch seperat geladen werden:

#install.packages("ggplot2")
library(ggplot2)

Komponenten

Hier ein ganz simples beispiel von Anfang bis Ende. Welche daten? Irgendwas, was für linear regression geeignet ist. TidyTuesday?

Olympische Daten wieder? Daran könnte man den Medaillienverlauf auch gut zeigen. Aber irgendwas wäre besser mit kontinuierlich durchlaufenden daten.

Daten vorstellen

library(tidyverse)

athletes <- readRDS(file = here::here("raw_data", "athletes.rds"))
world_coordinates <- readRDS(file = here::here("raw_data", "world_coordinates.rds"))

medal_counts <- athletes %>%
  filter(Medal == "Gold") %>%
  group_by(Region) %>%
  count(Medal)

medal_countries <- world_coordinates %>%
  rename("Region" = region) %>%
  left_join(medal_counts)
Joining with `by = join_by(Region)`

Best country each year.

medal_counts <- athletes %>% 
  filter(!is.na(Medal), Season == 'Summer') %>% 
  group_by(Year, Region) %>% 
  count(Medal) %>%
  group_by(Year, Medal) %>%
  mutate(col = ifelse(Region == "Germany", "1", "0")) %>% 
  mutate(region_medal = paste0(Region, Medal))

  #slice_max(order_by = n, n = 1, with_ties = FALSE)

Daten

ggplot(data = medal_counts) 

Aesthetic mappings

ggplot(data = medal_counts, 
       mapping = aes(x = Year, y = n))

Das erzeugt erst einmal nur das Koordinatensystem. Als nächstes fügen wir layers hinzu.

Layer

ggplot(data = medal_counts, 
       aes(x = Year, y = n)) +
  geom_point()

Maybe plot against number of total medals

ggplot(data = medal_counts, 
       aes(x = Year, y = n, group = region_medal, alpha = col)) +
  geom_point(aes(colour = Medal)) +
  geom_line(aes(colour = Medal)) +
  scale_color_manual(values = c("1" = "red", "0" = "lightgrey", "Gold" = "yellow", "Silver" = "grey", "Bronze" = "brown")) +
  scale_alpha_manual(values = c("1" = 1, "0" = 0.1)) +
  theme_classic()

data_germany <- medal_counts %>% 
  filter(col == '1')
data_noGermany <- medal_counts %>% 
  filter(col == 0)


ggplot(data = medal_counts, 
       aes(x = Year, y = n, group = region_medal, alpha = col)) +
  geom_point(data = data_noGermany, aes(colour = Medal)) +
  geom_line(data = data_germany, aes(colour = Medal)) +
  scale_color_manual(values = c("1" = "red", "0" = "lightgrey", "Gold" = "yellow", "Silver" = "grey", "Bronze" = "brown")) +
  scale_alpha_manual(values = c("1" = 1, "0" = 0.1)) +
  theme_classic() 

library(ggbump)
ggplot(data = medal_counts, 
       aes(x = Year, y = n, group = region_medal)) +
  geom_bump(color = 'grey90') 
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group
Warning in compute_group(...): 'StatBump' needs at least two observations per
group

Was ist hier auch mit missing data?

Let’s take a deeper look

Hier dann nochmal genauer durchgehen - Was haben wir eigentlich gemacht. Nicht zu sehr in den Basics verlieren, auch schneller tiefer reingehen (scales, coord system …)